Portions of this patent application contain materials that are subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document, or the patent disclosure, as it appears in the Patent and Trademark Office.
Not applicable.
Not applicable.
This invention generally relates to improvements in computer systems, and more particularly, to system software for managing the design, simulation, implementation and maintenance of a manufacturing process.
A visit to virtually any modern manufacturing facility in the world leaves room for little doubt that assembly and machining lines have become an integral part of the manufacturing process. Robots, computers, programmable logic controllers, mills, drills, stamps, clamps, sensors, transfer bars, assemblers, etc., are more numerous than people in most modern manufacturing facilities. This is because almost every industry has recognized that use of automated assembly and machining lines to form and assemble product components and assemblies reduces manufacturing time, reduces product costs and increases product quality. Hereinafter, automated assembly and machining will be referred to collectively as automated manufacturing.
Unfortunately, while automated manufacturing has a large number of advantages, such manufacturing also has a number of shortcomings. In particular, the process (hereinafter xe2x80x9cthe development processxe2x80x9d) of designing, constructing and debugging a manufacturing process has a large number of shortcomings. To understand the shortcomings of the development process, it is helpful to consider an exemplary development process. To this end, an exemplary development process will be described in the context of developing a manufacturing line for producing a basic automobile door frame assembly (i.e. the door without the window, window motors, activation buttons and other trim components).
To this end, initially a body engineer designs a door assembly based on experience of parts, structural knowledge and welding information. To facilitate the door frame design process a body engineer typically uses a standard computer aided design (CAD) package (e.g. CATIA, Pro-Engineer, etc.). Using such a package the body engineer can change frame dimensions, component thicknesses, rivet numbers, angles, the shapes of curved surfaces and so on.
A. The Development Process
From beginning to end, including the skills of a body engineer, the development process required to design, build and debug an automated manufacturing line involves no less than four separate engineering disciplines, each of which has a different set of required engineering skills. The three disciplines in addition to body engineering include process engineering, mechanical engineering, controls engineering and manufacturing engineering.
Once the door frame assembly has been designed, the frame design information is given to a process engineer. The process engineer designs a process which will be required to manufacture the door frame assembly. To this end, the process engineer translates management numbers for finished door frame assemblies into a high-level process of actions and resources based on acquired experience. When specifying the high-level process the process engineer specifies required manufacturing tools (e.g. robots, clamps, workcells, etc.).
This tool defining process, like the door frame design process, has been streamlined by use of computer aided manufacturing (CAM) software packages which enable a process engineer to virtually specify different mechanical tool types and tool configurations including clamps, robots, mills, drills, assemblers, etc. which can be used to actually manufacture the door frame assembly. Sometimes a tool library will be provided in a CAM package which includes commonly used mechanical tools, the mechanical tools selectable for reuse when required. Where a required tool is not provided in a library, the CAM package and or CAD package can be used to design the required mechanical tool for use in the door frame manufacturing process and for storage in the library for subsequent use if desired.
In addition to specifying the mechanical tools, the process engineer may also specify mechanical tool movements required during the manufacturing process. For example, for a clamp, the process engineer may specify an open position and a closed position and thereby may define a range of movements therebetween. This ability to specify tool actions allows a process engineer to build a model of a mechanical tool in software such that the model has both static and kinematic characteristics. The virtual tool can then interact with other parts in an automated virtual manufacturing process in the time dimension.
Moreover, the process engineer also specifies mechanical tool timing and sequencing via either a bar chart timing diagram, a flow chart or some other suitable sequence specifying tool. This sequencing information indicates the sequence of tool movements during the automated manufacturing process. Furthermore, the process engineer specifies resources and goals to drive the manufacturing process and may attempt to generate a cost justification for the frame assembly manufacturing process.
Hereinafter, the term xe2x80x9cmechanical resourcesxe2x80x9d will be used to refer generally to the manufacturing tools which are specified by a process engineer and the specified tool movements will be referred to as xe2x80x9cbehaviorxe2x80x9d. In addition the information as a whole provided by the process engineer will be referred to as xe2x80x9cprocess informationxe2x80x9d.
Next a control engineer receives the process information and, based on experience, uses the process information to select control mechanisms and determines how to configure the mechanisms for controlling the mechanical resources. The control system includes at least one PLC (i.e. a controller), sensors and actuators and electrical lines and hydraulic tubing for linking the PLC to the actuators and sensors. The actuators and sensors are control mechanisms.
The actuators are eventually linked to the mechanical resources for motivating the mechanical resources in a manner consistent with the process information. Sensors are eventually linked to mechanical resources or are positioned adjacent mechanical resources and indicate an instantaneous condition (e.g. the position of a resource, the temperature of a liquid, the position of a work itemxe2x80x94the upper left corner of a door frame, etc.) in the manufacturing process.
In addition, the control engineer has to integrate the mechanical sequencing information, causal relationships, a Human Machine Interface (HMI), I/O tables and safety and diagnostic information into the control system design. To aid in the process of selecting and configuring control devices to control the mechanical resources and to provide a blue print for subsequent assembly of the control system, the control engineer also generates a control system schematic with representations of each control device and electrical and hydraulic links between devices and the PLC. Hereinafter the information provided by the control engineer will be referred to as xe2x80x9ccontrols informationxe2x80x9d.
Next, a manufacturing engineer receives the controls information and the process information, uses the process information to construct the line via specified mechanical resources, uses the controls information to construct the control system and links the control system to the mechanical resources.
After the line is completely developed, the control engineer further generates execution code to execute on the PLCs to implement the automated manufacturing processes. Then a control engineer performs tests on line tools to identify execution code bugs in the system design. For example, the control engineer may check to determine if a robot arm will crash into a work item on a transfer bar during a specified tooling process or if a sensor is operating properly to detect the presence of a clamp during a clamp extending movement. While an engineer other than the control engineer may be able to debug specific systems, in most cases the control engineer is required for the debugging process. This is because any change in the system may ripple through other parts of the control process which are not intuitive and which may only be known to the control engineer. In most cases many bugs show up during this debugging process and therefore this step in the automated manufacturing process is extremely tedious. This is particularly true in automated manufacturing which requires complex control systems.
Hereinafter, the separate sub-processes of the development process which are performed by the separate engineers will be referred to as xe2x80x9cprocess phasesxe2x80x9d.
B. Development Process Shortcomings
The above described development process has a large number of shortcomings. First, the development process is extremely time consuming. In fact, the typical time required for designing, building, testing and reworking a simple manufacturing line is often months and the time required for a relatively complex line often takes years of man hours. In many industries the import of time is exacerbated by competitive product cycles where getting a new product to market before a competitor is crucial to a companies competitive posture. For example, in the automotive industry fresh styling is extremely important to entice product turnover.
Second, while some of the development process phases have been streamlined using design software (e.g. CAD and CAM are used to design a door frame assembly and the mechanical tools required to construct the frame assembly), other process phases are not streamlined. This is particularly true of the PLC logic programming process.
While the industry is starting to employ various programming languages, most industrial PLCs are still programmed in Ladder Logic (LL) where instructions are represented graphically by xe2x80x9ccontactsxe2x80x9d and xe2x80x9ccoilsxe2x80x9d of virtual relays connected and arranged in ladder-like rungs across power rails. LL, with its input contacts and output coils, reflects the emphasis in industrial control on the processing of large amounts of input and output data.
LL also reflects the fact that most industrial control is xe2x80x9creal timexe2x80x9d; that is, an ideal industrial controller behaves as if it were actually composed of multiple relays connected in parallel rungs to provide outputs in essentially instantaneous response to changing inputs. Present industrial PLCs do not, in fact, employ separate parallel relay-like structures, but instead simulate the parallel operation of the relays by means of a conventional Harvard or Von Neumann-type computer processor which executes instructions one at a time, sequentially. The practical appearance of parallel operation is obtained by employing extremely fast processors in the execution of the sequential control program.
As each rung is executed, inputs represented by the contacts are read from memory (as obtained from inputs from the controlled process or the previous evaluation of coils of other rungs). These inputs are evaluated according to the logic reflected in the connection of the contacts into one or more branches within the rungs. Contacts in series across a rung represent boolean AND logic whereas contacts in different branches and thus in parallel across a rung represent boolean OR logic.
Typically a single output coil at the end of each rung is set or reset. Based on the evaluation of that rung, this setting or resetting is reflected in the writing to memory of a bit (which ultimately becomes an output to the industrial process or to another LL rung).
Once a given rung is evaluated the next rung is evaluated and so forth. In the simplest form of LL programming there are no jumps, i.e. all rungs are evaluated in a cycle or xe2x80x9cscanxe2x80x9d through the rungs. This is in contrast to conventional computer programming where branch and jump instructions cause later instructions or groups of instructions to be skipped, depending on the outcome of a test associated with those branch or jump instructions.
While LL is well suited for controlling industrial processes like those in the automotive industry, LL programming is not an intuitive process and, therefore, requires highly skilled programmers. Where hundreds of machine tool movements must be precisely synchronized to provide a machining process, programming in LL is extremely time-consuming. The time and relative skill associated with LL programming together account for an appreciable percentage of overall costs associated with a control system.
Industry members have made several attempts to streamline the logic programming process. One way to streamline any type of programming is to provide predefined language modules, expressed in a language such as LL, which can be used repetitively each time a specific function is required. Because of the similar types of tools and movements associated with different mechanical tools, industrial control would appear to be an ideal industry for such language modules.
The predefined logic module approach works quite well for certain applications, like small parts-material handling or simple machining. The reason for this is that the LL required for these applications tends to be very simple. In small parts material handling applications the I/O count is low and the interfaces between modules are minimal. In fact, the mechanisms are often independent units, decoupled from neighboring mechanisms by part buffers such that no signals are required to be exchanged between modules. These xe2x80x9cloosely coupledxe2x80x9d systems lend themselves to xe2x80x9ccut and pastexe2x80x9d programming solutions.
Unfortunately the predefined, fixed logic module approach does not work well for other applications, for example metal-removing applications. There are several reasons for this. First, there can be considerable variation in how components, such as sensors and actuators, combine to produce even simple mechanisms. Second, processes like metal removing normally require tightly controlled interaction between many individual mechanisms. Exchanging signals called interlocks between the control logic modules of the individual mechanisms control the interaction. The application of specific interlocks depends on knowledge of the process and the overall control strategy, information not generally needed or knowable when the control logic for each mechanism is defined.
For example, a drill is a typical metal-removing tool used in the automotive industry. In this example an ideal drill is mounted on a carriage that rides along a rail between two separate limiting positions on a linear axis, an advanced position and a returned position. Two limit switches, referred to herein as returned and advanced LSs, are positioned below the carriage and, when tripped, signal that the drill is in the returned and advanced positions, respectively. Two separate dogs (i.e. trigger extensions), an advanced dog and a returned dog, extend downwardly from the bottom of the carriage to trip the LSs when the advanced and returned positions are reached, respectively. In the ideal case, both LSs may be assumed to be wired in the same xe2x80x9cnormally openedxe2x80x9d manner, so that electrically speaking they are open when released and closed when triggered. In this ideal case, where the physical characteristics of the switches are limited, a single LL logic rung can determine when the drill is in the returned position and another rung can determine when the drill is in the advanced position.
Unfortunately, in reality, there are electrically two types of LSs, one LS type being wired normally opened and the other type wired normally closed. Furthermore, any LS can be mechanically installed in a tripped-when-activated configuration, or a released-when-activated configuration. All combinations of these types are used for various types of applications. Thus, application requirements may demand control logic capable of handling any configuration of LS types.
Simple mathematics demonstrates that with two different electrical types of LSs and two mechanical configurations, there are sixteen possible configurations of a two-position linear slide. Consider the language modules required to implement position logic for all these configurations. To accommodate all sixteen-switch configurations, there could be sixteen different language modules, each containing fixed LL logic, and each named for the case it could handle. In this case, there would be duplicate logic under different names. Alternatively, four unique language modules could be provided, but then the user would have difficulty identifying which of the sixteen physical configurations that the four modules could handle.
Clearly, even for a simple drill mounted on a two position linear slide, application variables make it difficult to provide a workable library of fixed language modules. Adding more switches to the linear slide only increases, to an unmanageable level, the number of language modules required in the library.
Moreover, the contents of a complete language module for a drill must also consider other variables. These variables include, for example, the number and type of actuators required; the type of spindle, if any; whether or not a bushing plate is required; what type of conveyor is used; whether or not the drill will include an operator panel to enable local control. If an operator panel is included, what type of controls (i.e. buttons, switches and indicator lights) are required, just to name a few. Each tool variable increases the required number of unique LL modules by more than a factor of two, which makes it difficult at best to provide an LL library module for each possible drill configuration.
Taking into account the large number of different yet possible machine-line tools, each tool having its own set of variables, the task of providing an all-encompassing library of fixed language modules becomes impractical. Even if such a library could be fashioned, the task of choosing the correct module to control a given tool would probably be more difficult than programming the required LL logic from scratch.
For these reasons, although attempts have been made at providing comprehensive libraries of fixed language modules, none has proven particularly successful and much LL programming is done from scratch.
Third, the process of generating schematic control diagrams is extremely labor intensive and thus time consuming. This is because most schematic control diagrams have to be constructed by hand linking electrical and hydraulic lines from one control mechanism to another, from devices to a PLC representation, linking control devices to mechanical tools and so on.
To reduce the time required to generate control system schematics, most control engineers now use one or more commercially available CAD systems specifically designed for generating schematic designs. These CAD systems enable an engineer to select standard representations for specific control mechanisms and enable relatively quick electrical and hydraulic linking representations to be generated. Nevertheless, these CAD systems can result in erroneous connection specification as a control engineer makes the decisions about how to link control mechanisms. This is particularly true in the case of a large control system where only a small portion of the entire control system can be viewed on a work station screen at one time. In this case, the possibility of linking electrical and hydraulic lines incorrectly is exacerbated. Moreover, in complex control systems, while reducing the overall time required to form a control system schematic, the time is still appreciable.
Fourth, the process of generating diagnostic tools is also not streamlined. For example, there may be specific conditions which should not occur during a machining cycle. For instance, where the control mechanisms for a clamp include both extended and retracted limit switches, there should never be an instance when both the extended and retracted switches are triggered. Unlikely or unpredictable conditions are referred to hereinafter as interesting conditions. In current systems, a control engineer should identify the most troubling interesting conditions which should be identified during a machining cycle and provide logic outputs to support indicators of the interesting conditions.
In addition, some systems require actual diagnostic functions to be performed. For example, many times an interesting condition has only one or two possible causes. In these cases, the system may be required to, when the interesting condition occurs, identify the possible causes so that a system operator can locate the cause of the interesting condition and eliminate the cause. Here, the system usually includes a screen for providing an alphanumeric message to the operator.
Moreover, some applications may require a system to attempt to further identify or even eliminate the cause of an interesting condition. In this case, when an interesting condition occurs, the system may check other system I/O to further diagnose the cause of the condition, providing a report to the operator via a system screen. In the alternative, when an interesting condition occurs and there is only one possible cause, the system may attempt to eliminate the condition. For example, where a transfer bar is stuck, the system may be programmed to reverse the transfer bar prior to moving forward again.
Where a system requires diagnostic functions in addition to interesting condition reporting, in addition to identifying interesting conditions, the control engineer has to identify all possible causes of each interesting condition, compose informative instructions for display to an operator indicating the causes of the interesting conditions, provide logic to identify the interesting conditions and, in some cases, provide logic to eliminate the interesting conditions.
In addition to interesting conditions which should not occur, there may also be other interesting conditions which should be reported to a system operator. In these cases diagnostic logic should be provided to identify these other interesting conditions and provide some type of indication. Clearly identifying all interesting conditions and their causes, composing messages for each cause and providing logic to do the same is a complex and time consuming endeavor.
Fifth, the process of specifying HMI design and logic required to support HMI representations is not streamlined. Here the control engineer, while creating the control logic generally, has to weave HMI logic into the system which provides desired PLC input signals (e.g. signals from sensors) and enables control via PLC output signals to control actuators.
Sixth, the process of debugging is not streamlined. As indicated above, an entire mechanical line (including all tools and accompanying control system) has to actually be designed and constructed and PLC execution code has to be generated prior to performing the debugging process. Obviously, once tools have been constructed and execution code has been provided the process of backtracking to modify design is difficult and extremely costly.
Seventh, while the process described above may be manageable for a single door frame assembly, similar processes are required for virtually every separate part of a final product and similar processes are also required to assemble parts into the final product. For example, because a typical automobile requires many thousands of different parts, a development process similar to the process described above must be repeated several thousand times to provide a completed automobile.
In the end, if line throughput is not sufficient parts of the line or even the entire line may have to be modified to increase line throughput. Once again, line modification is expensive as any system change can ripple through the entire control system thereby requiring additional changes.
To streamline the debugging process and facilitate cost justification prior to actually building and testing a manufacturing line, the industry has attempted to debug an automated manufacturing line virtually. In theory, virtual building and simulation enables a designer to modify line design relatively inexpensively when a bug is identified or when the costs associated with a particular line design cannot be justified by an expected throughput.
One virtual simulation solution has been to effectively provide a cartoon or movie illustrating all mechanical tools on a line in three dimensions and to run the manufacturing line in the virtual world to illustrate system operation. One way to accomplish this is to provide a video module which includes a video clip for each separate mechanical tool included on an assembly line. The video module is driven by the mechanical timing diagram such that, when the timing diagram indicates a specific resource movement, the video module plays the video clip associated with the specific resource movement. The video module is capable of running several video clips at a time on different sections of a display screen so that, by arranging the separate video clips on the screen a general picture of a complete manufacturing process can be provided. While this solution is helpful in visualizing a manufacturing process, unfortunately this solution does not illustrate tool control in the real world which will result from actual execution code.
Another virtual simulation solution has been to provide off-line programming for certain tools which is then linked to virtual representations of those tools for simulating actual tool movements. For example, most robots are controlled by specialized controllers which execute controller specific languages (i.e. languages which typically are very different than the PLC language) in such a way that a robot can move a work piece through space along a variety of path profiles. Some companies have developed virtual simulation tools which enable robot programs which are developed off-line and in the controller specific languages to be used to drive virtual representations of the robot and a work piece handled thereby, including robot and work piece translation through virtual space. Importantly, the actual program used to drive the robot in the real world is used to drive the virtual robot in the virtual environment. As described above, the components in the work cell (including the part or part components) already exist in some mechanical CAD environment and are available to these programming tools. With these simulation tools a process engineer can interact with a virtual work cell and verify that his robot program does what he intends the program to do.
In order to truly debug the robot program in a virtual world, the rest of the robot""s real world environment must also be simulated such that the environment interacts dynamically with the robot motion. For example, clamps need to open and close, parts need to move into and out of the work cell, humans need to start and stop processes, sensors need to sense part and manufacturing tool locations and so on.
Unfortunately, while the simulation tools described above are used to drive virtual robots with the actual robot programs which will be used in the real world, similar tools have not been developed for simulating the robot environment (e.g. clamps, sensors, actuators, stops and starts, contingencies, HMIs, etc.). Existing tools simulate the robot""s environment in the virtual world through a combination of proprietary modeling languages and graphical interfaces which are wholly disconnected from the programs which are used to control the manufacturing tools in the real world. Thus, while the virtual environment is controlled via modeling languages, in the real world these non-robotic components are controlled via a PLC and a control language (e.g. LL).
It should also be noted that, while robots themselves are internally controlled via controller specific languages, ultimately, each robot is linked to other system tools via a PLC which provides commands and receives feedback via a more conventional control language.
To provide pre-construction cost justification, in addition to the virtual simulation tools described above, various systems have been developed for estimating both the costs associated with automated manufacturing lines and groups of related lines and the throughput for specific lines. While these justification system may sometimes fortuitously generate cost data which is close to the actual cost data corresponding to a completed system, in most cases these justification systems provide a ball park figure at best. Unfortunately, while a ball park figure may be acceptable in some industries, in other industries where competition is particularly keen, such ball park figures are not very helpful in strategic financial planning as even a few percent error may require line redesign.
Thus, it should be appreciated that despite industry efforts to streamline the development process, the development process remains extremely complex. The transition from part design to process design to mechanical design and then to controls is a paper activity. Each of these activities separately have their own software tools, and of course, a competent set of engineers. The barriers between the software tools aren""t just a matter of bridging different data types. Because the tools used in each phase of the development process evolved through solving their respective user""s unique problems, their views of the world are very different, even though they ultimately solve a common problem: how to build a product.
In addition to the system development problems discussed above, failure and interesting condition reporting diagnostics have a number of shortcomings. One important shortcoming is that a system which supports interesting condition or failure reporting typically provides insufficient information to enable a system operator to identify the cause of the failure. This is because system events may be contingent upon the conclusion of many other events and the diagnostics provided typically cannot indicate which of a long string of contingent events causes a failure or an interesting condition to occur. For example, where extension of a clamp is to be monitored and failure reported, if clamp extension is contingent upon 10 previous events, when clamp failure occurs and is reported, which of the 10 previous events failed is not reported and some investigation is required.
In addition, where prescriptive diagnostics are provided, the prescriptive messages (i.e., the text which indicates likely cause of the problem) are only pre-failure hunches as to what the actual cause of failure might be. While based on experience and hence correct much of the time, these hunches may not be correct and hence may lead an operator in the wrong direction to address the failure this wasting system and operator resources.
For example, while the process engineer can specify specific tools and movements required to carry out a process, the process information is in a form which, while providing specifying information to the control engineer, cannot be used directly by control engineers to perform his development tasks. Instead, each time the development process is handed from one engineer to another, the receiving engineer must start by generating his own set of information which is based on the information specified by the previous engineers and, only then can the receiving engineer begin to perform his task of specifying further information for the next engineer down stream. Thus, the development process is broken up into separate pieces despite the fact that common information threads pass through each of the separate phases of the development process.
For at least the aforementioned reasons, it would be advantageous to have a system which would streamline the entire development process including defining an automated manufacturing line, developing execution code to control the manufacturing line tools including tool movements, sequencing, emergency situations, etc., specifying and supporting HMIs for the line, specifying diagnostics for the line, simulating line operation in a virtual environment prior to building the line and using the actual real world control programs to drive a virtual line in the virtual environment, debugging the control programs, and providing schematic diagrams for a complete control system automatically. It would also be advantageous to have a system wherein the common threads of information which are provided by one engineer are sustained throughout the development process and automatically provided in a form which is useable by engineers in subsequent process phases.
Moreover, it would be advantageous to have a diagnostics scheme which could specifically and immediately identify the symptoms which are associated with a failure.
It has been recognized that during the development process there are certain common information threads which pass through various development process phases. By studying the information passed from one process phase to the next, inventive tools have been developed which enable one engineer to use information in the form provided by previous engineers to continue the development process without reworking the received information. In this manner, the common threads of information flow continuously through the development process from beginning to end.
It has further been recognized that the control engineering phase is a critical juncture for the common threads of information and, that by providing suitable tools to the control engineer which organize the development information, the entire development process can be streamlined and many advantages result. In effect, the inventive tools operate as a lynchpin which enables a control engineer to easily generate controls information from the process information (i.e. specified mechanical tools, behavior and sequencing) and which also enables controls information to be fed back and combined with the process information to virtually simulate a manufacturing process using the actual execution code which will be used in the real world.
To this end, among other things, the present invention includes a data construct referred to generally as a xe2x80x9ccontrol assemblyxe2x80x9d (CA). It is contemplated that a plurality of different CAS will be provided, a separate CA for each type of mechanical resource which may be specified by a process engineer. Each CA includes several different information types associated with the specific CA. For example, a CA for controlling a specific clamp may include: (1) specification of control mechanisms for controlling the clamp; (2) a schematic diagram of the clamp illustrating clamp control mechanisms and electrical and hydraulic links; (3) logic for controlling the control mechanisms used to in turn control the specific clamp; (4) diagnostic logic for indicating either erroneous conditions which occur, other interesting conditions or status of a process, (5) logic for supporting an HMI associated with the clamp; and (6) simulation specification for simulation purposes. Herein, the term xe2x80x9clogicxe2x80x9d is used to refer to sequencing rules associated with the control mechanisms corresponding to a specific CA.
As another example, a CA for controlling a robot may include: (1) specification mapping PLC I/O to robot I/O; (2) a schematic diagram referencing the inputs and outputs and electrical and hydraulic links; (3) logic for interfacing to the robot; (4) diagnostic logic for indicating interesting conditions; (5) logic for supporting an HMI associated with the robot; and (6) simulation specification for simulation purposes. The CA is essentially an object in an object oriented system for specifying information which a control engineer must generate for an associated mechanical resource.
By observing the process information, including specified mechanical resources, mechanical resource behavior and mechanical resource sequencing, an engineer can divide the mechanical resources into separate mechanical blocks, each block assigned to a specific instance of a CA. By including each mechanical resource in a mechanical block and assigning a CA for each mechanical block, control information is easily specified for each mechanical resource.
After all CAS have been specified, an inventive compiler is used to compile all of the information in the CAS and to generate several different types of information. To this end, the compiler compiles the schematic diagrams of the separate control devices, linking the devices according to a schematic rule set (SRS) to generate a complete schematic illustrating all line control devices, controllers and electrical and hydraulic links therebetween.
In addition, the compiler uses the logic from each of the CAS to generate execution code for controlling and monitoring the entire manufacturing line.
Moreover, the compiler compiles the HMI logic from each of the CAS into HMI supporting code which enables a suitable HMI.
Furthermore, the compiler automatically compiles diagnostic information from each of the CAS and generates diagnostic code which is interweaved with the control code and which can be used to facilitate diagnostic functions during virtual testing and in real world operation.
In addition to the CA structure and the inventive compiler, the invention further include a CA editor which enable a control engineer to easily link to process information upstream thereby streamlining the processes of generating the controls information by carrying common threads of information from the process information into the controls information. To this end, mechanical resources, their behavior and their sequencing is displayed on a CA editor screen as a mechanical timing diagram with mechanical resources and specific behaviors along a vertical axis and behavior sequencing mapped along a horizontal timing axis.
Using the CA editor, the control engineer identifies specific mechanical resource types on the mechanical timing diagram and selects suitable CAS for controlling each of the mechanical resources or blocks of mechanical resources which can be controlled by a single CA. As a CA is selected, the CA editor automatically creates an instance of the CA and places the CA in a control bar chart. The control bar chart includes CAS and CA behavior along the vertical axis and sequencing of CA behavior along a horizontal time axis. To distinguish between CA behavior and mechanical resource behavior, CA behavior will be referred to hereinafter as CA requests.
In one embodiment, as CA requests are added to the timing diagram, the requests are sequenced in the same timing sequence as associated mechanical resource behavior in the timing diagram. For example, if the first mechanical resource behavior in a process is to close a clamp within a first period, the CA request to extend a piston (i.e. an actuator) to close the clamp is placed in the bar chart during the first period. If the clamp behavior in the timing diagram is to open during a tenth period, the CA request to retract the piston to open the clamp is placed in the bar chart during the tenth period and so on.
After all CAS have been selected and the control bar chart is completely populated, the CA editor enables the control engineer to specify contingencies at the edges of each request in the bar chart. In addition to the CA editor, the invention is meant to be used with an HMI editor and a diagnostics editor, each of which use CA information to configure and specify HMI and diagnostics features, respectively. After all of the sequencing information required to completely control the control system has been provided, an inventive compiler is used to generate execution code as described above.
Moreover, the CA simulation specification can be used to provide at least a subset of data which is required by a simulator for virtually simulating a process via video screens or the like. To this end, a core modeling system (CMS) is a simulator which models all aspects of mechanical resources supported by a system and which are simulatable. For example, when suitably programmed a CMS may model several different mechanical resources including a clamp with position sensors. Clamp operation may have specific characteristics such as reversibility, average stroke speed, velocity limiting factors, a variable stroke speed curve between start and stop, operating characteristics which change as a function of environmental characteristics (e.g. temperature, humidity, etc.) and so on. To model mechanical resources a CMS requires a plurality of data structures, a separate data structure for each simulatable resource in each instantiated CA. Unlike a one-to-one I/O-function paring, advanced data structures reflect real world resource behavior wherein request execution varies as a function of a plurality of different circumstantial characteristics.
A CMS which is equipped with separate data structures for each simulatable resource in each instantiated CA can operate as an interface between a PLC and a movie module to receive PLC I/O combinations and, based thereon, cause the movie module to virtually simulate the mechanical resources. The CMS also provides feedback to the PLC. Behavior characteristics such as simulation speed are simulated by the CMS controlling movie frame speed.
To facilitate data structure specification, the present invention contemplates that information required to form the structures portion thereof may be specified in CA simulation specifications and could be imported by the CMS for simulation purposes. While any sub-set of simulation information required by a CMS may be specified in a CA simulation specification, there is a specific information sub-set which is particularly easy to support and which makes sense to specify within a CA. To this end, the characteristics of a mechanical resource set associated with a specific CA which affect resource operation can be divided into two general categories or first and second simulation information sets including control characteristics and circumstantial characteristics.
On one hand, with respect to control characteristics, from a controls perspective, a sub-set of resource characteristics are fundamental to the specific resource and do not vary as a function of the circumstances related to the resource (i.e., are universal for the specific resource). For example, many hardware vendor""s provide clamps including control mechanisms (e.g., valves, cylindicators, etc.) which, although configured using different hardware, perform the same general functions in response to PLC I/O combinations. Thus, each clamp will attempt to extend when a PLC xe2x80x9cextendxe2x80x9d I/O combination is received and each clamp will attempt to retract when a PLC xe2x80x9cretractxe2x80x9d I/O combination is received and so on. In this case corresponding I/O-function is independent of hardware configuration. Similarly, in this case, the I/O-function pairings are independent of clamp environment including temperature, humidity, etc. (i.e., despite temperature and humidity, extension is attempted when a specific I/O combination is received). Thus, with respect to similar clamps provided by different vendors, I/O-function pairings are control characteristics which are universal for clamps which would be used to perform the functions required by a specific resource.
On the other hand, circumstantial characteristics include all secondary characteristics which are not control characteristics and which affect request execution. For example, a first manufacturers clamp may have a different closing speed than a second manufacturers clamp. Similarly, a first manufacturers clamp may close at different speeds depending upon temperature and humidity conditions or speed may vary as a function of recent clamp use (e.g., recent closing and opening may result in more rapid closure speed).
In a preferred embodiment the CA simulation specifications include only control characteristics and do not include circumstantial characteristics. The CMS preferably includes a database wherein circumstantial characteristics are stored which can be used to alter simulation events making simulation more realistic. The circumstantial characteristics are stored in simulation data structure templates (DSTs) and, upon export of the CA simulation specification, the control characteristics and circumstantial characteristics are combined to populate data structure fields required for simulation. Thereafter the CMS receives controller output signals and based on those output signals, modeling algorithms within the data structure and other data structure information, causes realistic simulation.
In this manner the CA simulation specification is made relatively general and the CMS facilitates modification of circumstantial characteristics without recompiling CAS. After a data structure is populated, circumstantial characteristics may be modified using a CMS interface to reflect various environmental or resource characteristics and simulation will also reflect such changes to facilitate realistic simulation.
In addition to facilitating circumstantial characteristic modifications, by including only control characteristics in the CA simulation specifications the number of CAS required to support design choices is minimized. In effect circumstantial parameterization is accomplished via the CMS instead of via the CA.
Moreover, dividing characteristics between control and circumstantial characteristics and including control characteristics in the CAS makes sense as the control characteristics can typically be gleaned from other CA information which is specified for other than simulation purposes. For example, where a CA may support anywhere between one and four clamps and a user specifies that a CA will support only two clamps such that a compiler will provide execution code for controlling two clamps, clearly this parameterization will be reflected in simulation such that, during simulation, only two clamp animations are generated. Thus, supported CA devices are specified for control purposes and such specification is also useful for simulation purposes. In effect, the effort required to specify two clamps for execution code purposes can be exploited a second time for generating control characteristics required for simulation. While this example is relatively simple, it should be appreciated that a huge amount of specification required for execution code purposes is exploited in this double-duty fashion thereby appreciably streamlining an otherwise daunting simulation specification process.
In another embodiment, the data required to populate essentially an entire data structure including both control and circumstantial characteristics may be specified within each CA simulation specification. In this case, upon compiling, sub-sets of the required simulation information for each simulatable resource are gleaned from each parameterized CA and are used to populate the data structures. After compiling, the data structure are imported by the CMS and then used for interfacing purposes. Other simulation specification embodiments may include other sub-sets of control and circumstantial characteristics.
In a simplified embodiment of the invention where a one-to-one pairing of PLC I/O and virtual simulation is supported without circumstantial characteristics, the parameterization simulation specification may simply be a PLC I/O mapping table which maps PLC I/O combinations to specific video clips. In this case, after the parameterized specification is compiled, the specification is imported by the CMS and used for interfacing purposes.
The inventive address mapper facilitates mapping of PLC I/O to virtual mechanical resources to cause virtual simulation, identifies mechanical resource conditions (e.g. position, temperature, etc.) which are to be sensed during real world operation and provides inputs to the PLC indicating identified conditions during virtual processing.
In addition to control and circumstantial characteristics, a third type of character referred to as a third entity characteristic is contemplated. Third entity characteristics include characteristics of entities other than mechanical resources which interact with the PLC or which only minimally interact with the PLC and which must be modeled to facilitate realistic simulation. For example, third entities include system operators, a shot pin used to lock two devices together, an E-stop and corresponding hardware and so on.
Thus, the invention provides a system which streamlines the entire development process including defining an automated manufacturing line, developing programs to control the manufacturing mechanical resources including resource movements, sequencing, emergency situations, etc., specifying and supporting HMIs for the line, simulating line operation in a virtual environment prior to building the line and using the actual real world execution code to drive a virtual line in the virtual environment, debugging the control programs, and automatically providing schematic diagrams for a complete control system.
In addition to the inventive aspects described above, in another aspect the invention includes status based diagnostics wherein every event which is to occur during a process is monitored and, when an expected event fails to occur, the failed event is reported. For example, where a clamp extension request is contingent upon the occurrence of ten previous events, when one of the previous events fails, status based diagnostics reports the failed event. In this manner, when a failure occurs, the specific symptoms of the failure are immediately reported and the operator can then surmise the cause of the failure quickly.
Request events are represented in the CAS and therefore status based diagnostics can easily be provided in each CA to minimize the task of programming diagnostics code for each event in a process. For example, where a clamp CA includes extend and retract requests and ten separate events, diagnostics can be provided once for each event in a template CA and, therefore, as CA instances are instantiated (i.e. selected by an operator for control purposes), the status based diagnostics are proliferated throughout the control process. In this manner, the task of providing status based diagnostics which seemed virtually impossible before can easily be accomplished through CA duplication (i.e., instantiation).
These and other objects, advantages and aspects of the invention will become apparent from the following description. In the description, reference is made to the accompanying drawings which form a part hereof, and in which there is shown a preferred embodiment of the invention. Such embodiment does not necessarily represent the full scope of the invention and reference is made therefor, to the claims herein for interpreting the scope of the invention.